1. Technical Field
The present invention generally relates to distributed data processing systems and in particular to server programming in distributed data processing systems. Still more particularly, the present invention relates to improved techniques for repeated deployment of pre-developed program applications to distributed data processing systems.
2. Description of the Related Art
Java(trademark) (a trademark of Sun Microsystems, Inc. of San Jose, Calif.) is a software development language that enables programmers to create program applications and small programs called applets. A virtual machine is generated by Java(trademark) that provides a control interface allowing a Java(trademark) program to overlay and operate on virtually any operating system.
Java(trademark) (Java) was developed with distributed computing, low to no administration and platform independence in mind. The Java(trademark) platform for enterprise-capable Java(trademark) computing utilizes Enterprise JavaBeans(trademark) (trademark of Sun Microsystems) (EJBean) technology that provides for the development and deployment of reusable server components. EJBean server components are individual specialized applications that run in an application server. Traditionally, in a client/server application, the client contains control logic for manipulating a database management system on the server.
EJBeans are designed to support high scalability using a multitier distributed application architecture (architecture that has multiple application components) and the multitier orientation provides many advantages over traditional client/server architectures. EJBean components contain no system level programming, include only business related logic and are fully portable across any EJBean compliant server and any Operating System (OS). Some advantages to EJBean components include reusability, performance, scalability, wire protocol neutral architecture and manageability among others.
Locating logic, for manipulating data, on one or more servers allows an application to operate in multi-processing and multi-threaded systems. Server components can be replicated and distributed across multiple systems enabling multi-tier systems with a scalability of essentially no limit. With a multi-tier environment, reliability is high and manageability is easier because most of the application logic is on the server.
A server component is a reusable software application that performs specific functions and is accessible to any other application through the server component""s interface. A server component can be developed for one application and reused in another application that may use the function. Basically, server components are basic building blocks that have specific, published functions that may be combined with other components and applications into a configuration that performs a task designed by a developer.
Traditionally, a Java Virtual Machine (JVM) allows a Java application to run on any operating system, but server side components require proprietary programming interfaces based on vendor software and hardware. EJBean server components are portable and virtually vendor-independent on all Java EJBean compliant application servers. With server component portability, increased scalability, reliability and re-usability, EJBean components can be moved from one execution environment to another without requiring any recoding. Determining whether a new component is valid is a problem that accompanies portability and reusability of EJBean components. EJBean components are required to implement a specific set of interfaces with the container that encloses the beans so the container can manage and control the bean. If the component has a purported function and is moved from one execution environment to another, the component should be validated before being deployed throughout the system served by the EJBean compliant server.
Deploying an EJB involves introspecting classes, reading serialized deployment data, generating code, compiling the generated code and packaging it all up for installation. This can take a significant amount of time to complete, particularly if the platform uses C++ as part of the generated code. The largest portion of time is spent compiling the generated code and can take hours to complete depending on the speed of the host, the amount of code being generated, and the language being used.
The amount of time spent waiting for deployment to complete can significantly reduce productivity during the edit, compile, debug loop phase of development. Therefore, it would be desirable to provide a means to significantly reduce the redeployment time spent during this phase.
It is therefore one object of the present invention to provide an improved distributed data processing system.
It is another object of the present invention to provide improved server programming in distributed data processing systems.
It is yet another object of the present invention to provide improved techniques for repeated deployment of pre-developed program applications to distributed data processing systems.
The foregoing objects are achieved as is now described.
There is provided a system, method, and software program for a fastpath redeployment of an Enterprise Java Bean (EJB). When an EJB is deployed, a copy of it is cached on the server. Thereafter, if the EJB is redeployed, it is compared to the cached copy to determine if the deployment descriptors or remote interfaces have changed. If there has been no change, then the previously deployed EJB is installed on the server, without the need to regenerate and recompile the EJB code.
The above as well as additional objectives, features, and advantages of the present invention will become apparent in the following detailed written description.